package com.zyf.chapter01.principle.practice;

import com.zyf.chapter01.principle.DRY.utils.StringUtils;

/**
 * 提供 API，来采集接口请求的原始数据
 * 职责相对比较单一，基于接口而非实现编程，可以在不修改代码的情况下，灵活替换
 * @author yifeng
 */
public class MetricsCollector {
    // 基于接口而非实现编程
    private MetricsStorage metricsStorage;

    public MetricsCollector(MetricsStorage metricsStorage) {
        this.metricsStorage = metricsStorage;
    }

    public void recordRequest(RequestInfo requestInfo) {
        if (requestInfo == null || StringUtils.isBlank(requestInfo.getApiName())) {
            return;
        }

        metricsStorage.saveRequestInfo(requestInfo);
    }
}
